home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / dev / basic / ace24dist.lha / ace24.lha / prgs / Fractals / ManSing.bas < prev    next >
BASIC Source File  |  1996-09-10  |  2KB  |  93 lines

  1.  
  2. ' AmigaBASIC needs about 13500 s. for this program, the compiled
  3. ' version about 2340 s.
  4.  
  5. ' This program came with the Aminet distribution of the ShareWare BASIC
  6. ' compiler, Cursor. Converted to ACE on 5th December 1994 by David Benn.
  7.  
  8.  'OPTION NOWINDOW,SOMEPCRELATIVE
  9.  
  10.  ON WINDOW GOTO quit
  11.  WINDOW ON
  12.  
  13.  XLPos = -2.4
  14.  XRPos = .8
  15.  YDPos = -1.2
  16.  YUPos = 1.2
  17.  
  18.  MaxIter% = 32
  19.  
  20.  SCREEN 1,640,200,4,2
  21.  WINDOW 1,"Mandelbrot",(0,0)-(640,200),8,1
  22.  
  23.  PALETTE 0,0,0,0
  24.  PALETTE 1,1,1,1
  25.  c1 = 0 : c2 = .5 : c3 = 1 : dc1 = 1/6.5 : dc2 = 1/6.5 : dc3 = 1/6.5
  26.  FOR a% = 2 TO 15
  27.    IF c1+dc1 < 0 OR c1+dc1 > 1 THEN dc1 = -dc1
  28.    c1 = c1+dc1
  29.    IF c2+dc2 < 0 OR c2+dc2 > 1 THEN dc2 = -dc2
  30.    c2 = c2+dc2
  31.    IF c3+dc3 < 0 OR c3+dc3 > 1 THEN dc3 = -dc3
  32.    c3 = c3+dc3
  33.    PALETTE a%,c1,c2,c3
  34.  NEXT a%
  35.  
  36.  t& = TIMER
  37.  
  38.  XSize = XRPos-XLPos
  39.  YSize = YUPos-YDPos
  40.  
  41.  XPixelSize = WINDOW(2)
  42.  YPixelSize = WINDOW(3)
  43.  
  44.  mystep% = 1024
  45.  WHILE mystep%
  46.    FOR px% = 0 TO XPixelSize-1 STEP mystep%
  47.      FOR py% = 0 TO YPixelSize-1 STEP mystep%
  48.        IF (px% AND mystep%) OR (py% AND mystep%) OR (mystep% = 1024) THEN
  49.          c.r = XLPos+px%/XPixelSize*XSize
  50.          c.i = YDPos+(YPixelSize-1-py%)/YPixelSize*YSize
  51.          x.r = 0
  52.          x.i = 0
  53.          num% = 0
  54.          x.r.quadrat = x.r*x.r
  55.          x.i.quadrat = x.i*x.i
  56.          WHILE x.r.quadrat+x.i.quadrat < 1000 AND num% < MaxIter%
  57.            x.i = (x.r+x.r)*x.i+c.i
  58.            x.r = x.r.quadrat-x.i.quadrat+c.r
  59.            x.r.quadrat = x.r*x.r
  60.            x.i.quadrat = x.i*x.i
  61.            num% = num%+1
  62.          WEND
  63.          IF num% = MaxIter% THEN
  64.            mycolor% = 0
  65.          ELSE
  66.            mycolor% = 2+(num% MOD 14)
  67.          END IF
  68.          IF mystep% = 1 THEN
  69.            PSET (px%,py%),mycolor%
  70.          ELSE
  71.            LINE (px%,py%)-(px%+mystep%-1,py%+mystep%-1),mycolor%,BF
  72.          END IF
  73.        END IF
  74.      NEXT
  75.    NEXT
  76.    mystep% = mystep%\2
  77.  WEND
  78.  
  79.  WINDOW OFF
  80.  
  81.  'WINDOW 2,"Time:"+STR$((TIMER-t&+86400&) MOD 86400&)+" s.",(0,0)-(640,200),,1
  82.  'BEEP
  83.  'WHILE INKEY$ <> ""
  84.  'WEND
  85.  WHILE INKEY$ = ""
  86.  WEND
  87.  'WINDOW CLOSE 2
  88.  
  89. quit:
  90.   WINDOW CLOSE 1
  91.   SCREEN CLOSE 1
  92. END
  93.